1. Field of the Invention
The present invention relates generally to computer operating system software, and in particular, to methods for communicating between application programs and various input services provided by the system software. Still more particularly, the present invention relates to a system that provides: several input methods for processing text of different languages, methods for maintaining multiple instances of input methods, and methods for automatically synchronizing input methods.
2. Description of the Related Art
An on-going problem in designing computers for use worldwide is adapting the standard QWERTY-type keyboard to handle the large number of characters found in the various written languages. For instance, written Chinese has no alphabet, instead it consists of approximately 50,000 characters. The Chinese writing system is logo graphic, meaning that each character stands for a word or part of a word. Similarly, the Japanese character set, Kanji, is borrowed from the Chinese system, and is a combination of Chinese characters and Kana characters. The Kanji character set officially has several thousand characters, although many more characters are in common use. Likewise, the Korean language has a set of several thousand characters and ideographs.
In order to accommodate such languages that have thousands of characters in the character set, a variety of input methods for converting input from a keyboard or similar input device to a particular character have been developed. For example, there are several methods for converting keyboard inputs to Kanji for the Japanese language. One such input method begins by accepting Roman characters as input with a standard keyboard, and displays the Roman characters. Then the user manipulates the input device to convert the Roman characters to Kana characters. The Kana characters can then be further manipulated in accordance with the rules of the input method to convert groups of Kana characters to their Kanji equivalents. There are other input methods for each language that are designed based on the language to allow use of the standard keyboard for inputting characters.
To assist users of character-based text processing software, software developers have produced Front-End Processors (FEPs) which convert the sequential keyboard entries of the user to an appropriate letter of the target character set. These FEPs are also often referred to as "input methods." The existing system software is very inflexible because it requires that the application have only one specific FEP associated with it. The application would specify which FEP it was going to use. The user has little choice as to which FEP was available. This inflexibility between input methods is a particular problem when attempting to generate a document having multiple language translations, such as multinational user's manual. Thus, there is a need for an operating system that allows applications to easily switch between different input methods.
In addition to front-end processors, application programs take advantage of numerous other text services modules which augment and facilitate the capabilities of the application. Typical additional text services include spelling checkers, hyphenation checkers, grammar checkers, dictionary lookup services, thesauruses, syntax checkers, and equation processors.
Some applications have attempted to resolve the inflexibility for input methods and text services by providing the capability within the application to process different formats of input using multiple input methods or FEPs. However, such applications are problematic in two respects. First, they require significant amounts of time to create and debug as well as suffering from performance problems at run-time because there is a significant burden for the application to track the input, and manage the FEPs. Second, the applications still suffer from inflexibility problems. For any new text service or input method to be part of the application, the application must be revised to include the new input method or text service as a option for input to the application. Such revisions to the application are not trivial, and can require hundreds of man hours. Thus, there is a need for an operating system that accommodates the addition of new text services and input methods along with easy access to such services.
Another problem for existing systems is maintaining the proper operation between input methods when the user switches between applications. In the past, applications have communicated directly with the input method or FEP. Thus, there are no existing systems that allow more than one input method to be active. Existing systems do not address the problem or need for having several instances of each input method (one for each application) open. Existing systems also do not provide any method for synchronizing the input method with the window or application that is active.
Therefore, there is a needed for a computer operating system that includes a means which operates as an interface between a given application and a selection of text services or input methods, enabling the user to select from among and switch between various text services, without regard for the specific protocol requirements of the text service or input method.